]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
base-icon: Always recreate icon texture on style changes
authorFlorian Müllner <fmuellner@gnome.org>
Wed, 2 Mar 2011 23:25:23 +0000 (00:25 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Thu, 3 Mar 2011 22:14:32 +0000 (23:14 +0100)
Currently the icon texture is only updated on style changes when
the icon size is set from CSS and differs from the previously used
icon size.
As the style change may have been triggered by an icon theme change,
textures that are created for themed icons should always be recreated;
given that this is the case for most uses (with the exception of
file thumbnails), recreate the icon texture unconditionally to avoid
complexity.

https://bugzilla.gnome.org/show_bug.cgi?id=643738

js/ui/iconGrid.js

index f2d046cb2a7dd73ae88a1711fb47d479919f77d8..24556e2331422d828d91af897b636c299116bbec 100644 (file)
@@ -52,8 +52,7 @@ BaseIcon.prototype = {
             this.createIcon = params.createIcon;
         this._setSizeManually = params.setSizeManually;
 
-        this.icon = this.createIcon(this.iconSize);
-        this._iconBin.set_child(this.icon);
+        this.icon = null;
     },
 
     _allocate: function(actor, box, flags) {
@@ -116,14 +115,15 @@ BaseIcon.prototype = {
         if (!this._setSizeManually)
             throw new Error('setSizeManually has to be set to use setIconsize');
 
-        this._setIconSize(size);
-    },
-
-    _setIconSize: function(size) {
         if (size == this.iconSize)
             return;
 
-        this.icon.destroy();
+        this._createIconTexture(size);
+    },
+
+    _createIconTexture: function(size) {
+        if (this.icon)
+            this.icon.destroy();
         this.iconSize = size;
         this.icon = this.createIcon(this.iconSize);
 
@@ -139,12 +139,15 @@ BaseIcon.prototype = {
         let node = this.actor.get_theme_node();
         this._spacing = node.get_length('spacing');
 
-        if (this._setSizeManually)
-            return;
+        let size;
+        if (this._setSizeManually) {
+            size = this.iconSize;
+        } else {
+            let [found, len] = node.lookup_length('icon-size', false);
+            size = found ? len : ICON_SIZE;
+        }
 
-        let len = node.get_length('icon-size');
-        if (len > 0)
-            this._setIconSize(len);
+        this._createIconTexture(size);
     }
 };